package org.mtmi.ui.controls;

import org.mtmi.ui.controls.listeners.ValueChangedListener;

/** interface for control with able to fire a value in a range */
public interface IValueGenerator 
{
	/** @return lower bounds of allowed range value */
	int getMinValue();
	
	/** @return upper bounds of allowed range value */
	int getMaxValue();
	
	/** @return the current value */
	int getValue();
	
	/** @return value normalized to range [0..1], by convention if max==min return 0 */
	float getValueF();
	
	/** listen to value changes */
	void addValueChangedListener( ValueChangedListener listener );
	
	/** no more listen to value changes */
	void removeValueChangedListener( ValueChangedListener listener );
}
